home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC-SIG: World of Games
/
PC-SIG World of Games (CDRM1080710) (1993).iso
/
ENT
/
DISK0035.ZIP
/
MEMORY.BAS
< prev
next >
Wrap
BASIC Source File
|
1983-04-02
|
10KB
|
370 lines
10 KEY OFF:CLS
20 SCREEN 0
30 WIDTH 40
40 PRINT"░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░"
50 PRINT"░┌───────────────────────────────────┐░"
60 PRINT"░│ │░"
70 PRINT"░│ 5011-A.BAS │░"
80 PRINT"░│ MEMORY │░"
90 PRINT"░│ │░"
100 PRINT"░│ │░"
110 PRINT"░│ BROUGHT TO YOU BY THE MEMBERS OF │░"
120 PRINT"░│ ▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄ │░"
130 PRINT"░│ █ █ █ █ █ █ │░"
140 PRINT"░│ █ █▄▄▄█ █ █ █ │░"
150 PRINT"░│ █ █ █ █ █ │░"
160 PRINT"░│ ▄▄█▄▄ █ █▄▄▄▄ █▄▄▄█ │░"
170 PRINT"░│ │░"
180 PRINT"░│ International PC Owners │░"
190 PRINT"░│ │░"
200 PRINT"░│P.O. Box 10426, Pittsburgh PA 15234│░"
210 PRINT"░│ │░"
220 PRINT"░└───────────────────────────────────┘░"
230 PRINT"░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░"
240 PRINT
250 PRINT " PRESS ANY KEY TO CONTINUE
260 A$=INKEY$: IF A$="" THEN 260
270 WIDTH 80
280 CLS
1000 REM --- MEMORY -- WITH BLOCK LETTER CHARACTERS FOR TITLE
1010 DEFINT A-Z
1020 DIM COLMASK(8)
1030 FOR I = 1 TO 8
1040 COLMASK(I) = 2^(8-I)
1050 NEXT I
1060 DOTCHAR = 219
1070 DOT$ = STRING$(1,DOTCHAR)
1080 DEF SEG = &HF000
1090 BASEADR = &HFA6E
1100 KEY OFF
1110 REM --- MAIN LOOP
1120 CLS
1130 A$ = "MEMORY"
1140 CLS
1150 FOR I = 1 TO 6
1160 CHAR$ = MID$(A$,I,1)
1170 CODE = ASC(CHAR$)
1180 IF CODE >= 128 THEN BEEP : GOTO 1110
1190 ADR = BASEADR + CODE*8
1200 REM --- SUBROUTINE TO DISPLAY CHARACTER
1210 FOR ROW = 1 TO 8
1220 ROWVAL = PEEK(ADR + (ROW-1))
1230 FOR COL = 1 TO 8
1240 COLMASK = COLMASK(COL)
1250 IF (ROWVAL AND COLMASK) = 0 THEN 1290
1260 REM --- LOCATE TO BIT POSITION AND DISPLAY GIANT PIXEL
1270 LOCATE (ROW+8), 1 + (COL-1) + (I-1)*8
1280 PRINT DOT$;
1290 NEXT COL
1300 NEXT ROW
1310 NEXT I
1320 LOCATE 18,1
1330 PRINT "WHICH GAME DO YOU WANT TO PLAY"
1340 PRINT " 1) MEMORY USING NUMBERS"
1350 PRINT " 2) MEMORY USING SYMBOLS"
1360 A$ = INPUT$(1)
1370 IF A$ = "1" THEN 1400
1380 IF A$ = "2" THEN 1420
1390 GOTO 1360
1400 FIRST = 1
1410 GOTO 1430
1420 FIRST = 2
1430 DIM TUBE(5,8), SET(40)
1440 CLS
1450 REM --- DRAW OUTSIDE EDGE
1460 H = 20
1470 W = 79
1480 R = 1
1490 C = 1
1500 GOSUB 1860 ''' TOP SIDE
1510 GOSUB 2000 ''' RIGHT SIDE
1520 GOSUB 2080 ''' BOTTOM SIDE
1530 GOSUB 2160 ''' LEFT SIDE
1540 LOCATE R,C
1550 PRINT CHR$(201)
1560 R = 5
1570 GOSUB 1910 ''' ACROSS
1580 R = 9
1590 GOSUB 1910 ''' ACROSS
1600 R = 13
1610 GOSUB 1910 ''' ACROSS
1620 R = 17
1630 GOSUB 1910 ''' ACROSS
1640 R = 1
1650 C = 10
1660 GOSUB 2200 ''' UP
1670 C = 20
1680 GOSUB 2200 ''' UP
1690 C = 30
1700 GOSUB 2200 ''' UP
1710 C = 40
1720 GOSUB 2200 ''' UP
1730 C = 50
1740 GOSUB 2200 ''' UP
1750 C = 60
1760 GOSUB 2200 ''' UP
1770 C = 70
1780 GOSUB 2200 ''' UP
1790 FOR R = 5 TO 17 STEP 4
1800 FOR C = 10 TO 70 STEP 10
1810 LOCATE R,C
1820 PRINT CHR$(206)
1830 NEXT C
1840 NEXT R
1850 GOTO 2300
1860 REM *** START OF SUBROUTINE
1870 REM *** ROUTINE FOR TOP SIDE
1880 LOCATE R,C :REM print top left hand corner
1890 PRINT CHR$(201)
1900 GOTO 1930
1910 LOCATE R,C
1920 PRINT CHR$(204)
1930 FOR I = C+1 TO W
1940 LOCATE R,I :REM print top side
1950 PRINT CHR$(205)
1960 NEXT I
1970 LOCATE R,W+1
1980 PRINT CHR$(185)
1990 RETURN
2000 REM *** ROUTINE FOR RIGHT HAND SIDE
2010 LOCATE R,C+W :REM print top right hand corner
2020 PRINT CHR$(187)
2030 FOR I = R+1 TO R+H
2040 LOCATE I,C+W :REM print right hand side
2050 PRINT CHR$(186)
2060 NEXT I
2070 RETURN
2080 REM *** ROUTINE FOR BOTTOM SIDE
2090 LOCATE R+H,C+W :REM print bottom right corner
2100 PRINT CHR$(188)
2110 FOR I = C+W-1 TO C+1 STEP -1
2120 LOCATE R+H,I :REM print bottom side
2130 PRINT CHR$(205)
2140 NEXT I
2150 RETURN
2160 REM *** ROUTINE FOR LEFT HAND SIDE
2170 LOCATE R+H,C :REM print bottom left corner
2180 PRINT CHR$(200)
2190 GOTO 2220
2200 LOCATE R+H, C
2210 PRINT CHR$(202)
2220 FOR I = R+H-1 TO R+1 STEP -1
2230 LOCATE I,C :REM print left hand side
2240 PRINT CHR$(186)
2250 NEXT I
2260 LOCATE R,C
2270 PRINT CHR$(203)
2280 RETURN
2290 END
2300 REM --- START ROUTINE FOR RANDOM IMAGES
2310 NUM = CVI(RIGHT$(TIME$,2))
2320 RANDOMIZE NUM
2330 REM --- DETERMINE DEGREE OF EXPERTISE
2340 LOCATE 22,1
2350 PRINT "ENTER DESIRED WAIT TIME: 1, 2, 3, OR 4 SECONDS"
2360 A$ = INKEY$
2370 IF A$ = "" THEN 2360
2380 DIF = VAL(A$)
2390 IF DIF < 1 THEN 2360
2400 IF DIF > 4 THEN 2360
2410 LOCATE 23,40
2420 PRINT " DELAY TIME WILL BE "; DIF; " SECONDS"
2430 REM --- SET UP INITIAL VALUES
2440 FOR I = 1 TO 20
2450 SET(I) = I
2460 SET(20+I) = I
2470 NEXT I
2480 REM --- TRANSFER INITIAL VALUES TO RANDOM VALUES ON SCREEN
2490 FOR I = 1 TO 5
2500 FOR J = 1 TO 8
2510 NUM = INT(40*RND(NUM) + 1)
2520 IF SET(NUM) = 0 THEN 2510
2530 TUBE(I,J) = SET(NUM)
2540 SET(NUM) = 0
2550 NEXT J
2560 NEXT I
2570 REM --- PRINT OUT VALUES
2580 FOR I = 1 TO 5
2590 FOR J = 1 TO 8
2600 LOCATE I*4-1, (J-1)*10+3
2610 IF FIRST = 1 THEN 2640
2620 GOSUB 3960
2630 GOTO 2650
2640 PRINT TUBE(I,J)
2650 NEXT J
2660 NEXT I
2670 REM --- NUMBER THE SCREEN
2680 FOR I = 1 TO 5
2690 FOR J = 1 TO 8
2700 LOCATE I*4-1, (J-1)*10+3
2710 PRINT I; J
2720 NEXT J
2730 NEXT I
2740 REM -- START GUESSING PROCESS
2750 LOCATE 22,1
2760 PRINT "ROW = COLUMN = AND ROW = COLUMN = "
2770 A$ = INKEY$
2780 IF A$ = "" THEN 2770
2790 I = VAL(A$)
2800 IF I <> 0 THEN 2840
2810 IF LEN(A$) = 1 THEN 2770
2820 BEEP
2830 GOTO 3770
2840 LOCATE 22,7
2850 PRINT A$
2860 A$ = INKEY$
2870 IF A$ = "" THEN 2860
2880 J = VAL(A$)
2890 IF J <> 0 THEN 2930
2900 IF LEN(A$) = 1 THEN 2860
2910 BEEP
2920 GOTO 3770
2930 LOCATE 22,21
2940 PRINT A$
2950 A$ = INKEY$
2960 IF A$ = "" THEN 2950
2970 L = VAL(A$)
2980 IF L <> 0 THEN 3020
2990 IF LEN(A$) = 1 THEN 2950
3000 BEEP
3010 GOTO 3770
3020 LOCATE 22,41
3030 PRINT A$
3040 A$ = INKEY$
3050 IF A$ = "" THEN 3040
3060 M = VAL(A$)
3070 IF M <> 0 THEN 3110
3080 IF LEN(A$) = 1 THEN 3040
3090 BEEP
3100 GOTO 3770
3110 LOCATE 22,55
3120 PRINT A$
3130 REM --- CHECK TO SEE IF SAME SPOT
3140 IF I <> L THEN 3200
3150 IF J <> M THEN 3200
3160 BEEP
3170 LOCATE 23,1
3180 PRINT "SAME SQUARE, GO AGAIN "
3190 GOTO 2740
3200 REM --- CHECK TO SEE IF VALID SUBSCRIPT
3210 IF I < 6 THEN 3260
3220 BEEP
3230 LOCATE 23,1
3240 PRINT "INVALID NUMBER........"
3250 GOTO 2740
3260 IF J > 8 THEN 3220
3270 IF L > 5 THEN 3220
3280 IF M > 8 THEN 3220
3290 REM --- CHECK TO SEE IF VALID SUBSCRIPT
3300 IF TUBE(I,J) = 0 THEN 3330
3310 IF TUBE(L,M) = 0 THEN 3330
3320 GOTO 3370
3330 LOCATE 23,1
3340 BEEP
3350 PRINT "KNOWN SQUARE, GO AGAIN"
3360 GOTO 2740
3370 REM --- DISPLAY VALUES
3380 COUNT = COUNT + 1
3390 LOCATE I*4-1, (J-1)*10+3
3400 PRINT " "
3410 LOCATE I*4-1, (J-1)*10+3
3420 IF FIRST = 1 THEN 3450
3430 GOSUB 3960
3440 GOTO 3460
3450 PRINT TUBE(I,J)
3460 LOCATE L*4-1, (M-1)*10+3
3470 PRINT " "
3480 LOCATE L*4-1, (M-1)*10+3
3490 IF FIRST = 1 THEN 3520
3500 GOSUB 3990
3510 GOTO 3530
3520 PRINT TUBE(L,M)
3530 REM --- CHECK FOR MATCHES
3540 IF TUBE(I,J) = TUBE(L,M) THEN 3650
3550 LOCATE 23,1
3560 PRINT "THEY DO NOT MATCH "
3570 T1 = VAL(RIGHT$(TIME$,2))
3580 T2 = VAL(RIGHT$(TIME$,2))
3590 IF ABS(T1-T2) < DIF THEN 3580
3600 LOCATE I*4-1, (J-1)*10+3
3610 PRINT I; J
3620 LOCATE L*4-1, (M-1)*10+3
3630 PRINT L; M
3640 GOTO 2740
3650 REM --- THE SQUARES MATCH
3660 BEEP
3670 LOCATE 23,1
3680 PRINT "THEY MATCH............"
3690 LOCATE I*4-1, (J-1)*10+3
3700 PRINT CHR$(17); CHR$(219); CHR$(219); CHR$(16)
3710 LOCATE L*4-1, (M-1)*10+3
3720 PRINT CHR$(17); CHR$(219); CHR$(219); CHR$(16)
3730 TUBE(I,J) = 0
3740 TUBE(L,M) = 0
3750 MATCH = MATCH + 1
3760 IF MATCH < 20 THEN 2740
3770 REM --- TIME TO MOVE ON
3780 LOCATE 23,1
3790 BEEP
3800 PRINT "THIS GAME IS OVER ---- "
3810 BEEP
3820 LOCATE 23,23
3830 PRINT "IT TOOK YOU "; COUNT; "TURNS "
3840 IF FIRST = 2 THEN 3920
3850 LOCATE 23,47
3860 PRINT " PRESS ANY KEY FOR GAME 2 "
3870 A$ = INKEY$
3880 IF A$ = "" THEN 3870
3890 FIRST = 2
3900 CLS
3910 GOTO 1450
3920 LOCATE 23,47
3930 PRINT " "
3940 LOCATE 23,1
3950 END
3960 REM --- ROUTINE TO PRINT OUT CHR$
3970 CHAR = TUBE(I,J)
3980 GOTO 4000
3990 CHAR = TUBE(L,M)
4000 ON CHAR GOTO 4010,4030,4050,4070,4090,4110,4130,4150,4170,4190,4210,4230,4250,4270,4290,4310,4330,4350,4370,4390
4010 PRINT CHR$(17); CHR$(219); CHR$(219) CHR$(16) '' 1
4020 RETURN
4030 PRINT CHR$(221); CHR$(220); CHR$(223) CHR$(222) '' 2
4040 RETURN
4050 PRINT CHR$(204); CHR$(205); CHR$(205) CHR$(185) '' 3
4060 RETURN
4070 PRINT CHR$(204); CHR$(206); CHR$(206) CHR$(185) '' 4
4080 RETURN
4090 PRINT CHR$(219); CHR$(16); CHR$(17) CHR$(219) '' 5
4100 RETURN
4110 PRINT CHR$(17); CHR$(16); CHR$(17) CHR$(16) '' 6
4120 RETURN
4130 PRINT CHR$(211); CHR$(210); CHR$(210) CHR$(189) '' 7
4140 RETURN
4150 PRINT CHR$(204); CHR$(188); CHR$(200) CHR$(185) '' 8
4160 RETURN
4170 PRINT CHR$(26); CHR$(24); CHR$(25) CHR$(27) '' 9
4180 RETURN
4190 PRINT CHR$(1); CHR$(2); CHR$(2) CHR$(1) '' 10
4200 RETURN
4210 PRINT CHR$(220); CHR$(223); CHR$(223) CHR$(220) '' 1/2
4220 RETURN
4230 PRINT CHR$(220); CHR$(223); CHR$(220) CHR$(223) '' 2/2
4240 RETURN
4250 PRINT CHR$(214); CHR$(215); CHR$(215) CHR$(183) '' 3/2
4260 RETURN
4270 PRINT CHR$(17); CHR$(205); CHR$(205) CHR$(16) '' 4/2
4280 RETURN
4290 PRINT CHR$(14); CHR$(14); CHR$(14) CHR$(14) '' 5/2
4300 RETURN
4310 PRINT CHR$(19); CHR$(19); CHR$(19) CHR$(19) '' 6/2
4320 RETURN
4330 PRINT CHR$(178); CHR$(176); CHR$(176) CHR$(178) '' 7/2
4340 RETURN
4350 PRINT CHR$(201); CHR$(203); CHR$(203) CHR$(187)
4360 RETURN
4370 PRINT CHR$(200); CHR$(239); CHR$(239) CHR$(188)
4380 RETURN
4390 PRINT CHR$(21); CHR$(15); CHR$(15) CHR$(21)
4400 RETURN
0 PRINT CHR$(200); CHR$(23